package com.spring.demo2.factory;

import org.springframework.beans.factory.annotation.Autowire;
import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.core.annotation.AliasFor;

import java.lang.annotation.*;

@Documented
@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyBean {

    // 第一个作为名称,其他为别名
    @AliasFor("name")
    String[] value() default {};

    @AliasFor("value")
    String[] name() default {};

    @Deprecated
    Autowire autowire() default Autowire.NO;

    // 是否作为其他对象注入时的候选bean
    boolean autowireCandidate() default true;

    // bean初始化的方法
    String initMethod() default "";

    // bean的销毁方法
    String destroyMethod() default AbstractBeanDefinition.INFER_METHOD;
}
